(display "\n========================================\n")
(define s (list 1 2 3))
(display s)
(newline)

(define (subsets s)
    (if (null? s)
        (list ())
        (let ((rest (subsets (cdr s))))
            (append rest (map (lambda (ss) (cons (car s) ss))
                              rest)))))
(display (subsets s))
(display "\n========================================\n")
